home *** CD-ROM | disk | FTP | other *** search
/ Assassins - Ultimate CD Games Collection 2 / Assassins 2 - Ultimate Games No. 2 (1995)(Weird Science)[!][Amiga-CD32-CDTV].iso / disks / asi011.dms / asi011.adf / Reversi.amos / Reversi.amosSourceCode < prev    next >
AMOS Source Code  |  1990-11-05  |  13KB  |  587 lines

  1. 'P I X E L   P R E C I S I O N  presents           
  2. '        R E V E R S I         
  3. '    By D. Ramsey. Sept. 1990        
  4. Dim BD(16,16)
  5. MAIN:
  6. BD(4,3)=1 : BD(3,4)=1 : BD(3,3)=2 : BD(4,4)=2
  7. Load "Apd85:titlescreen.abk",7
  8. Load "Apd85:megamusic.abk"
  9. Unpack 7 To 0 : Screen Display 0,,300,, : Hide On : Erase 7
  10. Music 1 : Tempo 16 : Mvolume 63
  11.  For Y=300 To 44 Step -4
  12.   Wait Vbl 
  13.    Screen Display 0,,Y,,
  14.   Next Y
  15. LL:
  16. Reserve Zone 4
  17. Set Zone 1,100,175 To 230,197
  18. Set Zone 2,105,202 To 222,212
  19. Set Zone 3,142,217 To 182,227
  20. Set Zone 4,111,231 To 215,241
  21. Limit Mouse : Show 
  22. L:
  23. While Mouse Key<>1
  24.  MZ=Mouse Zone
  25. Wend 
  26. If MZ=0 Then Goto L
  27. If MZ=1 Then NUMPLAYERS=1
  28. If MZ=2 Then NUMPLAYERS=2
  29. If MZ=3 Then NUMPLAYERS=0
  30. If MZ=4 Then Goto INST
  31. Fade 15 : Reserve Zone 0
  32. For V=63 To 0 Step -1 : Mvolume V : Wait 1 : Next : Erase 3
  33. Gosub INITILAISE
  34. Gosub DRW_BOARD
  35. LP:
  36. Gosub GT_PLYR_MVE
  37. Gosub CHKMVE
  38. Goto LP
  39. INITILAISE:
  40. Screen Close 0 : Load "Apd85:reversiboard.abk",6
  41. Unpack 6 To 1 : Screen Hide 1 : Erase 6 : Randomize Timer
  42. Hide On : Curs Off : Screen Open 0,640,200,16,Hires
  43. Screen Copy 1 To 0 : Ink 0, : Bar 0,0 To 8,8
  44. Screen 0 : Palette 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 : Flash Off 
  45. SX=16 : SY=-2 : Limit Mouse 139,51 To 335,246
  46. WHITES=0 : BLACKS=0 : Double Buffer : Bob Update Off 
  47. Screen Swap : Wait Vbl : Get Disc Fonts : Set Font 2
  48. Return 
  49. DRW_BOARD:
  50. Fade 5 To 1 : Wait 50
  51. Flash 15,"(000,4)(0d0,4)"
  52. For MY=3 To 4
  53. For MX=3 To 4
  54. CP=BD(MX,MY)
  55. Gosub DRWPIECE
  56. Next MX
  57. Next MY
  58. CP=1 : OP=2
  59. Return 
  60. GT_PLYR_MVE:
  61. Ink 3,15 : Bar 424,171 To 640,195 : Gr Writing 0
  62. Gosub TESTKEY
  63. Wait 20
  64. Gosub FULLBOARD
  65. If PASSED=2 Then Goto FINISH : Rem end of game
  66. Gosub CANYOUGO
  67.  If PASS=1
  68.   Gosub YOUCANTGO
  69.   Gosub CHPLYR
  70. Goto GT_PLYR_MVE
  71. End If 
  72.  If CP=1
  73. Ink 1,15
  74.  Text 424,193,"White to Move"
  75. Ink 0,15 : Text 426,194,"White to Move"
  76.  Else 
  77. Ink 1,15
  78. Text 424,193,"Black to Move"
  79. Ink 0,15 : Text 426,194,"Black to Move"
  80. End If 
  81. If CP=1 and NUMPLAYERS>0 or(CP=2 and NUMPLAYERS=2)
  82. Show 
  83.  While Mouse Key<>1 : Gosub TESTKEY : Wend 
  84.  Hide On 
  85.  MX=X Screen(X Mouse)-SX : MY=Y Screen(Y Mouse)-SY
  86.  MX=(MX/50) : MY=(MY/25)
  87. Else 
  88. Gosub TESTKEY
  89. Gosub COMPMOVE
  90. End If 
  91. If BD(MX,MY)>0
  92.  Bell : Ink 3,15 : Bar 424,171 To 640,195
  93.  Ink 1,15 : Text 430,193,"Invalid Move"
  94.  Ink 0,15 : Text 432,194,"Invalid Move"
  95.  Wait 40 : Goto GT_PLYR_MVE
  96.  End If 
  97. Return 
  98. CHKMVE:
  99. Gosub TESTKEY
  100. MOVED=0
  101. Gosub CHU : Gosub CHD : Gosub CHL : Gosub CHR
  102. Gosub CHLU : Gosub CHLD : Gosub CHRD : Gosub CHRU
  103.  If MOVED>0
  104.   Gosub CHPLYR
  105.   Dec PASSED : 
  106.   Else 
  107.   Bell : Ink 3,15
  108.   Bar 424,171 To 640,195
  109.   Ink 1,15
  110.   Text 430,193,"Invalid Move"
  111.   Ink 0,15 : Text 432,194,"Invalid Move"
  112.   Wait 20
  113. End If 
  114. If PASSED<0 Then PASSED=0
  115. Return 
  116. CHU:
  117.  POSS=0 : UP=1
  118. If MY<2 Then Return 
  119. If BD(MX,MY-1)<>OP Then Return 
  120. For C=1 To MY
  121.  If BD(MX,MY-C)=0 Then POSS=0 : Return 
  122.  If BD(MX,MY-C)=OP and POSS<2 Then POSS=1
  123.  If BD(MX,MY-C)=CP and POSS=1 Then POSS=2 : Goto MVU
  124. Next 
  125. Return 
  126. MVU:
  127. BD(MX,MY)=CP
  128. If MOVED=0 Then Gosub DRWPIECE
  129. MOVED=1
  130. While BD(MX,MY-UP)=OP
  131.  BD(MX,MY-UP)=CP
  132.  BNUM=(8*MX)+MY-UP : BX=SX+(MX*50)+8 : BY=SY+((MY-UP)*25)+2
  133. Gosub TURNCOLOUR
  134. Inc UP
  135. Wend 
  136. Return 
  137. CHD:
  138.  POSS=0 : DN=1
  139. If MY>7 Then Return 
  140. If BD(MX,MY+1)<>OP Then Return 
  141. For C=1 To 8-MY
  142.  If BD(MX,MY+C)=0 Then POSS=0 : Return 
  143.  If BD(MX,MY+C)=OP and POSS<2 Then POSS=1
  144.  If BD(MX,MY+C)=CP and POSS=1 Then POSS=2 : Goto MVD
  145. Next 
  146. Return 
  147. MVD:
  148. BD(MX,MY)=CP
  149. If MOVED=0 Then Gosub DRWPIECE
  150. MOVED=1
  151. While BD(MX,MY+DN)=OP
  152.  BD(MX,MY+DN)=CP
  153.  BNUM=(8*MX)+MY+DN : BX=SX+(MX*50)+8 : BY=SY+((MY+DN)*25)+2
  154. Gosub TURNCOLOUR
  155. Inc DN
  156. Wend 
  157. Return 
  158. CHL:
  159.  POSS=0 : LF=1
  160. If MX<2 Then Return 
  161. If BD(MX-1,MY)=0 or BD(MX-1,MY)=CP Then Return 
  162. For C=1 To MX
  163. If BD(MX-C,MY)=0 Then POSS=0 : Return 
  164.  If BD(MX-C,MY)=OP and POSS<2 Then POSS=1
  165.  If BD(MX-C,MY)=CP and POSS=1 Then POSS=2 : Goto MVL
  166. Next 
  167. Return 
  168. MVL:
  169. BD(MX,MY)=CP
  170. If MOVED=0 Then Gosub DRWPIECE
  171. MOVED=1
  172. While BD(MX-LF,MY)=OP
  173.  BD(MX-LF,MY)=CP
  174.  BNUM=8*(MX-LF)+MY : BX=SX+((MX-LF)*50)+8 : BY=SY+(MY*25)+2
  175. Gosub TURNCOLOUR
  176. Inc LF
  177. Wend 
  178. Return 
  179. CHR:
  180.  POSS=0 : RT=1
  181. If MX>7 Then Return 
  182. If BD(MX+1,MY)<>OP Then Return 
  183. For C=1 To 8-MX
  184.  If BD(MX+C,MY)=0 Then POSS=0 : Return 
  185.  If BD(MX+C,MY)=OP and POSS<2 Then POSS=1
  186.  If BD(MX+C,MY)=CP and POSS=1 Then POSS=2 : Goto MVR
  187. Next 
  188. Return 
  189. MVR:
  190. BD(MX,MY)=CP
  191. If MOVED=0 Then Gosub DRWPIECE
  192. MOVED=1
  193. While BD(MX+RT,MY)=OP
  194.  BD(MX+RT,MY)=CP
  195.  BNUM=(8*(MX+RT))+MY : BX=SX+((MX+RT)*50)+8 : BY=SY+(MY*25)+2
  196. Gosub TURNCOLOUR
  197. Inc RT
  198. Wend 
  199. Return 
  200. CHLU:
  201.  POSS=0 : LU=1
  202. If MY<1 or MX<1 Then Return 
  203. If BD(MX-1,MY-1)<>OP Then Return 
  204. For C=1 To 9
  205. If MY-C<0 or MX-C<0 Then Return 
  206. If BD(MX-C,MY-C)=0 Then POSS=0 : Return 
  207.  If BD(MX-C,MY-C)=OP and POSS<2 Then POSS=1
  208.  If BD(MX-C,MY-C)=CP and POSS=1 Then POSS=2 : Goto MVLU
  209. Next 
  210. Return 
  211. MVLU:
  212. BD(MX,MY)=CP
  213. If MOVED=0 Then Gosub DRWPIECE
  214. MOVED=1
  215. While BD(MX-LU,MY-LU)=OP
  216.  BD(MX-LU,MY-LU)=CP
  217.  BNUM=(8*(MX-LU))+MY-LU : BX=SX+((MX-LU)*50)+8 : BY=SY+((MY-LU)*25)+2
  218. Gosub TURNCOLOUR
  219. Inc LU
  220. Wend 
  221. Return 
  222. CHLD:
  223.  POSS=0 : LD=1
  224. If MY=7 or MX=0 Then Return 
  225. If BD(MX-1,MY+1)<>OP Then Return 
  226. For C=1 To 9
  227. If MY+C>7 or MX-C<0 Then Return 
  228. If BD(MX-C,MY+C)=0 Then POSS=0 : Return 
  229.  If BD(MX-C,MY+C)=OP and POSS<2 Then POSS=1
  230.  If BD(MX-C,MY+C)=CP and POSS=1 Then POSS=2 : Goto MVLD
  231. Next 
  232. Return 
  233. '
  234. MVLD:
  235. BD(MX,MY)=CP
  236. If MOVED=0 Then Gosub DRWPIECE
  237. MOVED=1
  238. While BD(MX-LD,MY+LD)=OP
  239.  BD(MX-LD,MY+LD)=CP
  240.  BNUM=(8*(MX-LD))+MY+LD : BX=SX+((MX-LD)*50)+8 : BY=SY+((MY+LD)*25)+2
  241. Gosub TURNCOLOUR
  242. Inc LD
  243. Wend 
  244. Return 
  245. CHRD:
  246.  POSS=0 : RD=1
  247. If MX=7 or MY=7 Then Return 
  248. If BD(MX+1,MY+1)<>OP Then Return 
  249. For C=1 To 9
  250. If MY+C>7 or MX+C>7 Then Return 
  251. If BD(MX+C,MY+C)=0 Then POSS=0 : Return 
  252.  If BD(MX+C,MY+C)=OP and POSS<2 Then POSS=1
  253.  If BD(MX+C,MY+C)=CP and POSS=1 Then POSS=2 : Goto MVRD
  254. Next 
  255. Return 
  256. MVRD:
  257. BD(MX,MY)=CP
  258. If MOVED=0 Then Gosub DRWPIECE
  259. MOVED=1
  260. While BD(MX+RD,MY+RD)=OP
  261.  BD(MX+RD,MY+RD)=CP
  262.  BNUM=(8*(MX+RD))+MY+RD : BX=SX+((MX+RD)*50)+8 : BY=SY+((MY+RD)*25)+2
  263. Gosub TURNCOLOUR
  264. Inc RD
  265. Wend 
  266. Return 
  267. CHRU:
  268.  POSS=0 : RU=1
  269. If MX=7 or MY=0 Then Return 
  270. If BD(MX+1,MY-1)<>OP Then Return 
  271. For C=1 To 9
  272. If MY-C<0 or MX+C>7 Then Return 
  273. If BD(MX+C,MY-C)=0 Then POSS=0 : Return 
  274.  If BD(MX+C,MY-C)=OP and POSS<2 Then POSS=1
  275.  If BD(MX+C,MY-C)=CP and POSS=1 Then POSS=2 : Goto MVRU
  276. Next 
  277. Return 
  278. MVRU:
  279. BD(MX,MY)=CP
  280. If MOVED=0 Then Gosub DRWPIECE
  281. MOVED=1
  282. While BD(MX+RU,MY-RU)=OP
  283.  BD(MX+RU,MY-RU)=CP
  284. BNUM=(8*(MX+RU))+MY-RU : BX=SX+((MX+RU)*50)+8 : BY=SY+((MY-RU)*25)+2
  285. Gosub TURNCOLOUR
  286. Inc RU
  287. Wend 
  288. Return 
  289. CHPLYR:
  290. Swap OP,CP
  291. Return 
  292. DRWPIECE:
  293. BX=SX+(MX*50)+8
  294. BY=SY+(MY*25)+2
  295. Ink 15, : Bar BX-2,BY To BX+44,BY+22 : Screen Copy Logic To Physic
  296. Wait 30 : Screen Copy 1,BX-2,BY,BX+45,BY+23 To 0,BX-2,BY
  297. Screen Copy Logic To Physic : Wait Vbl 
  298. If CP=1
  299. Inc WHITES
  300. For A=6 To 1 Step -1
  301. Screen Copy 1,BX,BY,BX+44,BY+22 To 0,BX,BY
  302. Paste Bob BX,BY,A
  303. Screen Copy Logic,BX,BY-1,BX+45,BY+23 To Physic,BX,BY-1 : Wait Vbl 
  304. Next : Shoot 
  305. Else 
  306. Inc BLACKS
  307. For A=6 To 11
  308. Screen Copy 1,BX,BY,BX+44,BY+22 To 0,BX,BY
  309. Paste Bob BX,BY,A
  310. Screen Copy Logic,BX,BY-1,BX+45,BY+23 To Physic,BX,BY-1 : Wait Vbl 
  311. Next : Shoot 
  312. End If 
  313. Gosub SHSCORE
  314. Return 
  315. '
  316. TURNCOLOUR:
  317. If CP=2
  318. Inc BLACKS : Dec WHITES
  319. For B=1 To 11
  320. Screen Copy 1,BX,BY,BX+44,BY+22 To 0,BX,BY
  321.  Paste Bob BX,BY,B
  322. Screen Copy Logic,BX-1,BY-1,BX+45,BY+23 To Physic,BX-1,BY-1 : Wait Vbl 
  323.  Next : Shoot 
  324. Else 
  325. Inc WHITES : Dec BLACKS
  326. For B=11 To 1 Step -1
  327. Screen Copy 1,BX,BY,BX+44,BY+22 To 0,BX,BY
  328. Paste Bob BX,BY,B
  329. Screen Copy Logic,BX-1,BY-1,BX+45,BY+23 To Physic,BX-1,BY-1 : Wait Vbl 
  330. Next : Shoot 
  331. End If 
  332. Gosub SHSCORE
  333. Return 
  334. SHSCORE:
  335. Ink 3,15
  336. Bar 566,63 To 625,83
  337. Bar 566,85 To 625,106
  338. Gr Writing 0
  339. Ink 1,3
  340. Text 566,82,Str$(BLACKS)
  341. Text 566,105,Str$(WHITES)
  342. Ink 0,3
  343. Text 567,83,Str$(BLACKS)
  344. Text 567,106,Str$(WHITES)
  345. Screen Copy Logic To Physic
  346. Return 
  347. COMPMOVE:
  348.  BESTX=0 : BESTY=0 : BEST=0
  349.  MOVED=0 : 
  350.  CORNER=0 : GOFORIT=0
  351.   For MX=0 To 8 Step 7
  352.   For MY=0 To 8 Step 7
  353. MOVED=0
  354. Gosub HU : Gosub HD : Gosub HL : Gosub HR
  355. Gosub HLU : Gosub HLD : Gosub HRD : Gosub HRU
  356. If MOVED>1 Then Return 
  357. If MOVED>0 and Rnd(1)=0 Then Return 
  358. Next MY
  359. Next MX
  360. For MX=0 To 8 Step 7
  361. For MY=0 To 7
  362. MOVED=0
  363. Gosub HU : Gosub HD : Gosub HL : Gosub HR
  364. Gosub HLU : Gosub HLD : Gosub HRD : Gosub HRU
  365. If MOVED>3 Then Return 
  366. Next MY
  367. Next MX
  368.  For MX=0 To 7
  369.  For MY=0 To 7
  370. MOVED=0
  371. Gosub HU : Gosub HD : Gosub HL : Gosub HR
  372. Gosub HLU : Gosub HLD : Gosub HRD : Gosub HRU
  373. If MOVED>BEST Then BEST=MOVED : BESTX=MX : BESTY=MY
  374. Next MY
  375. Next MX
  376. MX=BESTX : MY=BESTY
  377. Return 
  378. CANYOUGO:
  379. PASS=1
  380. MOVED=0
  381.  For MX=0 To 7
  382.  For MY=0 To 7
  383. Gosub HU : Gosub HD : Gosub HL : Gosub HR
  384. Gosub HLU : Gosub HLD : Gosub HRD : Gosub HRU
  385.  If MOVED>0 Then PASS=0
  386. Next MY
  387. Next MX
  388. Return 
  389. YOUCANTGO:
  390. Ink 3,15 : Bell 
  391. Bar 426,176 To 640,195
  392. Ink 0,15
  393. Set Font 1
  394. Text 430,191,"No Possible Move"
  395. Ink 1,15
  396. Text 432,192,"No Possible Move"
  397. Set Font 2 : Wait 60
  398. Inc PASSED
  399. Return 
  400. HU:
  401.  POSS=0 : UP=1
  402. If BD(MX,MY)>0 Then Return 
  403. If MY<2 Then Return 
  404. If BD(MX,MY-1)<>OP Then Return 
  405. For C=1 To MY
  406.  If BD(MX,MY-C)=0 Then POSS=0 : Return 
  407.  If BD(MX,MY-C)=OP and POSS<2 Then POSS=1
  408.  If BD(MX,MY-C)=CP and POSS=1 Then POSS=2 : Goto VU
  409. Next 
  410. Return 
  411. '
  412. VU:
  413. While BD(MX,MY-UP)=OP
  414. Inc UP
  415. Inc MOVED
  416. Wend 
  417. Return 
  418. '
  419. '
  420. HD:
  421. If BD(MX,MY)>0 Then Return 
  422.  POSS=0 : DN=1
  423. If MY>7 Then Return 
  424. If BD(MX,MY+1)<>OP Then Return 
  425. For C=1 To 8-MY
  426.  If BD(MX,MY+C)=0 Then POSS=0 : Return 
  427.  If BD(MX,MY+C)=OP and POSS<2 Then POSS=1
  428.  If BD(MX,MY+C)=CP and POSS=1 Then POSS=2 : Goto VD
  429. Next 
  430. Return 
  431. '
  432. VD:
  433. While BD(MX,MY+DN)=OP
  434. Inc DN
  435. Inc MOVED
  436. Wend 
  437. Return 
  438. '
  439. HL:
  440. If BD(MX,MY)>0 Then Return 
  441.  POSS=0 : LF=1
  442. If MX<2 Then Return 
  443. If BD(MX-1,MY)=0 or BD(MX-1,MY)=CP Then Return 
  444. For C=1 To MX
  445. If BD(MX-C,MY)=0 Then POSS=0 : Return 
  446.  If BD(MX-C,MY)=OP and POSS<2 Then POSS=1
  447.  If BD(MX-C,MY)=CP and POSS=1 Then POSS=2 : Goto VL
  448. Next 
  449. Return 
  450. '
  451. VL:
  452. While BD(MX-LF,MY)=OP
  453. Inc LF
  454. Inc MOVED
  455. Wend 
  456. Return 
  457. '
  458. HR:
  459. If BD(MX,MY)>0 Then Return 
  460.  POSS=0 : RT=1
  461. If MX>7 Then Return 
  462. If BD(MX+1,MY)<>OP Then Return 
  463. For C=1 To 8-MX
  464.  If BD(MX+C,MY)=0 Then POSS=0 : Return 
  465.  If BD(MX+C,MY)=OP and POSS<2 Then POSS=1
  466.  If BD(MX+C,MY)=CP and POSS=1 Then POSS=2 : Goto VR
  467. Next 
  468. Return 
  469. '
  470. VR:
  471. While BD(MX+RT,MY)=OP
  472. Inc RT
  473. Inc MOVED
  474. Wend 
  475. Return 
  476. '  
  477. HLU:
  478. If BD(MX,MY)>0 Then Return 
  479.  POSS=0 : LU=1
  480. If MY<1 or MX<1 Then Return 
  481. If BD(MX-1,MY-1)<>OP Then Return 
  482. For C=1 To 9
  483. If MY-C<0 or MX-C<0 Then Return 
  484. If BD(MX-C,MY-C)=0 Then POSS=0 : Return 
  485.  If BD(MX-C,MY-C)=OP and POSS<2 Then POSS=1
  486.  If BD(MX-C,MY-C)=CP and POSS=1 Then POSS=2 : Goto VLU
  487. Next 
  488. Return 
  489. '
  490. VLU:
  491. While BD(MX-LU,MY-LU)=OP
  492. Inc LU
  493. Inc MOVED
  494. Wend 
  495. Return 
  496. '
  497. HLD:
  498. If BD(MX,MY)>0 Then Return 
  499.  POSS=0 : LD=1
  500. If MY=7 or MX=0 Then Return 
  501. If BD(MX-1,MY+1)<>OP Then Return 
  502. For C=1 To 9
  503. If MY+C>7 or MX-C<0 Then Return 
  504. If BD(MX-C,MY+C)=0 Then POSS=0 : Return 
  505.  If BD(MX-C,MY+C)=OP and POSS<2 Then POSS=1
  506.  If BD(MX-C,MY+C)=CP and POSS=1 Then POSS=2 : Goto VLD
  507. Next 
  508. Return 
  509. '
  510. VLD:
  511. While BD(MX-LD,MY+LD)=OP
  512. Inc LD
  513. Inc MOVED
  514. Wend 
  515. Return 
  516. '
  517. HRD:
  518. If BD(MX,MY)>0 Then Return 
  519.  POSS=0 : RD=1
  520. If MX=7 or MY=7 Then Return 
  521. If BD(MX+1,MY+1)<>OP Then Return 
  522. For C=1 To 9
  523. If MY+C>7 or MX+C>7 Then Return 
  524. If BD(MX+C,MY+C)=0 Then POSS=0 : Return 
  525.  If BD(MX+C,MY+C)=OP and POSS<2 Then POSS=1
  526.  If BD(MX+C,MY+C)=CP and POSS=1 Then POSS=2 : Goto VRD
  527. Next 
  528. Return 
  529. '
  530. VRD:
  531. While BD(MX+RD,MY+RD)=OP
  532. Inc RD
  533. Inc MOVED
  534. Wend 
  535. Return 
  536. '
  537. HRU:
  538. If BD(MX,MY)>0 Then Return 
  539.  POSS=0 : RU=1
  540. If MX=7 or MY=0 Then Return 
  541. If BD(MX+1,MY-1)<>OP Then Return 
  542. For C=1 To 9
  543. If MY-C<0 or MX+C>7 Then Return 
  544. If BD(MX+C,MY-C)=0 Then POSS=0 : Return 
  545.  If BD(MX+C,MY-C)=OP and POSS<2 Then POSS=1
  546.  If BD(MX+C,MY-C)=CP and POSS=1 Then POSS=2 : Goto VRU
  547. Next 
  548. Return 
  549. '
  550. VRU:
  551. While BD(MX+RU,MY-RU)=OP
  552. Inc RU
  553. Inc MOVED
  554. Wend 
  555. Return 
  556. FINISH:
  557.  Wait 100 : Fade 5 : Wait 75
  558. Screen 1 : Screen Show 1 : Screen To Front 1
  559. Paper 0 : Pen 1 : Curs Off : Cls 0 : Fade 5 To 1 : Wait 50
  560. Zoom 0,444,41,620,111 To 1,40,20,600,180
  561. Locate 1,24 : Centre "Press Left Mousebutton"
  562. While Mouse Key<>1 : Wend 
  563. For XX=0 To 7 : For YY=0 To 7 : BD(XX,YY)=0 : Next YY : Next XX
  564. FULLBOARD=1 : PASSED=0 : MOVED=0 : POSS=0 : MX=0 : MY=0 : BX=0 : BY=0 : CP=1 : OP=2
  565. Fade 10 To 0 : Wait 150 : Goto MAIN
  566. FULLBOARD:
  567. FULLBOARD=1
  568. For XX=0 To 7
  569. For YY=0 To 7
  570. If BD(XX,YY)=0 Then FULLBOARD=0
  571. Next YY
  572. Next XX
  573. If FULLBOARD=1 Then PASSED=2
  574. Return 
  575. INST:
  576. Load "Apd85:instructions.abk",8
  577. Unpack 8 To 1 : Screen Display 1,,300,,
  578. For Y=300 To 44 Step -2 : Wait Vbl 
  579. Screen Display 1,,Y,, : Next : While Mouse Key<>1 : Wend 
  580. Screen Display 0,,300,, : Screen To Front 0 : Screen 0 : Erase 8
  581. For Y=300 To 44 Step -2 : Wait Vbl : Screen Display 0,,Y,, : Next 
  582. Screen Close 1
  583. Goto LL
  584. TESTKEY:
  585. I$=Inkey$ : If I$="Q" Then Bell : Goto FINISH
  586. If I$="q" Then Bell : Goto FINISH
  587. Return